package com.sssre.business.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.sssre.common.annotation.Excel;
import com.sssre.common.core.domain.BaseEntity;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * 养修信息预约对象 bus_appointment
 * 
 * @author 浪兎兎
 * @date 2025-04-28
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class BusAppointment extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    public static final Integer STATUS_BOOKING = 0;             // 预约中
    public static final Integer STATUS_ARRIVED = 1;             // 已到店
    public static final Integer STATUS_USER_CANCELLED = 2;      // 用户取消
    public static final Integer STATUS_TIMEOUT_CANCELLED = 3;   // 超时取消
    public static final Integer STATUS_SETTLED = 4;             // 结算单生成
    public static final Integer STATUS_PAID = 5;                // 已支付

    /** 主键 */
    private Long id;

    /** 微信用户ID */
    @Excel(name = "微信用户ID")
    private Long wxUserId;

    /** 客户联系方式 */
    @NotNull(message = "客户联系方式不能为空")
    @Excel(name = "客户联系方式")
    private String customerPhone;

    /** 预约时间 */
    @NotNull(message = "不能为空")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "预约时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date appointmentTime;

    /** 实际到店时间 */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "实际到店时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date actualArrivalTime;

    /** 车牌号码 */
    @NotNull(message = "车牌号码不能为空")
    @Excel(name = "车牌号码")
    private String licensePlate;

    /** 汽车类型 */
    @NotNull(message = "汽车类型不能为空")
    @NotBlank(message = "汽车类型不能为空")
    @Excel(name = "汽车类型")
    private String carSeries;

    /** 服务类型 */
    @NotNull(message = "服务类型不能为空")
    @Excel(name = "服务类型")
    private Integer serviceType;

    /** 备注信息 */
    @Excel(name = "备注信息")
    private String info;

    /** 状态 */
    @Excel(name = "状态")
    private Integer status;
}
